package com.example.springboot.高级特性;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 1.外部配置源
 * 常用：Java属性文件、YAML文件、环境变量、命令行参数
 * 2、配置文件查找位置
 * (1) classpath 根路径
 * (2) classpath 根路径下config目录
 * (3) jar包当前目录
 * (4) jar包当前目录的config目录
 * (5) /config子目录的直接子目录  //只针对linux
 *  下面的配置优先级高// 最后加载  信息覆盖
 *3、配置文件加载顺序：
 *     1. 　当前jar包内部的application.properties和application.yml
 *     2. 　当前jar包内部的application-{profile}.properties 和
 *                       application-{profile}.yml
 *     3. 　引用的外部jar包的application.properties和application.yml
 *     4. 　引用的外部jar包的application-{profile}.properties 和
 *                        application-{profile}.yml
 *
 *  指定环境优先，外部优先，后面的可以覆盖前面的同名配置项
 *
 */

@RestController
public class 外部配置信息的获取 {
    @Value("${Path}")//获取环境变量指定的值
    private String Path;
    @Value("${DriverData}")
    private String DriverData;
    @Value("${os.name}")
    private String osName;

    @GetMapping("/outProperties")
    public Map getName(){
        Map<String,Object> m = new HashMap<>();
        m.put("Path",Path);
        m.put("DriverData",DriverData);
        m.put("osName",osName);
        return m;
    }
}
